import tool.*;

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;

/**
 * @Description: 在每个树行中找最大值
 * 给定一棵二叉树的根节点 root ，请找出该二叉树中每一层的最大值。
 * @Date:Create in 11:02  2022/6/23
 */
public class largestValues0515 {

    public static void main(String[] args) {
        String s = "[1,3,2,5,3,null,9]";
        TreeNode root = input.getTree(s);
        TreeNodePrint.printTree(root);

        System.out.println(largestValues1(root));
    }

    public static List<Integer> largestValues1(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        if(root == null){
            return list;
        }
        Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
        queue.add(root);

        while(!queue.isEmpty()){
            int size = queue.size();
//            //这里不要用element方法你试一下
//            int temp = queue.element().val;
            int min = Integer.MIN_VALUE;
            int max = Integer.MAX_VALUE;
            for(int i=0;i<size;i++){
                TreeNode cur = queue.poll();
                if(cur.val > min){
                    min = cur.val;
                }
                if(cur.left!=null){
                    queue.add(cur.left);
                }
                if(cur.right!=null) {
                    queue.add(cur.right);
                }
            }
            list.add(min);
        }
        return list;
    }
}
